home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / September 93.iso / Archives / Utilities / Graphic / Conversion / viewers / GL Viewer 1.1.1 / src ƒ / grasp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-05  |  5.3 KB  |  276 lines  |  [TEXT/KAHL]

  1. #ifndef H_grasp
  2. #define H_grasp
  3.  
  4. /*-
  5.  * Mac hack of
  6.  * grasp.h - random collection of defines and structures...
  7.  *
  8.  * Copyright (c) 1991 by Patrick J. Naughton
  9.  */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <ctype.h>
  14. #include <string.h>
  15.  
  16. // ---------------------------- mac adds
  17.  
  18. typedef     unsigned int u_int;
  19. typedef     unsigned short u_short;
  20. typedef     unsigned char u_char;
  21. typedef     unsigned long u_long;
  22.  
  23. #define    True    1
  24. #define    False    0
  25.  
  26. #include "xlib.h"
  27.  
  28. //-------------------
  29.  
  30. extern char *pname;
  31. extern int  imageloop;
  32. extern int  showdirectory;
  33. extern int  showtext;
  34. extern int  printthecodes;
  35. extern int  fQuiet;
  36. extern int  verbose;
  37. extern int  imverbose;
  38. extern Display *dsp;
  39. extern Window win;
  40. extern Visual *vis;
  41. extern XVisualInfo vinfo;
  42. extern int  screen;
  43. extern int  planes;
  44. extern GC   gc;
  45. extern GC   gc1;
  46. extern long whiteC;
  47. extern long blackC;
  48. extern int  currentcolor;
  49. //extern Atom protocol_atom;
  50. //extern Atom kill_atom;
  51. extern XRectangle window;
  52.  
  53. extern u_int GetByte();
  54. extern u_int GetWord();
  55. extern u_long GetLong();
  56. extern Colormap CreateEGAcmap();
  57. extern int  videomode;
  58. extern int  spacegap;
  59. extern int  chargap;
  60. extern void lowerstr();
  61. extern char *strdup();
  62.  
  63. #define NOTOKEN        0
  64. #define BOX        1
  65. #define BREAK        2
  66. #define CALL        3
  67. #define CFADE        4
  68. #define CFREE        5
  69. #define CGETBUF        6
  70. #define CHGCOLOR    7
  71. #define CIRCLE        8
  72. #define CLEARSCR    9
  73. #define CLOAD        10
  74. #define CLOSEGL        11
  75. #define COLOR        12
  76. #define CYCLE        13
  77. #define DATA        14
  78. #define DATABEGIN    15
  79. #define DATAEND        16
  80. #define DATASKIP    17
  81. #define DFREE        18
  82. #define DLOAD        19
  83. #define EDGE        20
  84. #define ELSE        21
  85. #define ENDLFLOAT    22
  86. #define ENDIF        23
  87. #define EXEC        24
  88. #define EXIT        25
  89. #define FFREE        26
  90. #define FGAPS        27
  91. #define FLOAD        28
  92. #define FLOAT        29
  93. #define FLY        30
  94. #define FONT        31
  95. #define FSTYLE        32
  96. #define GETCOLOR    33
  97. #define GETKEY        34
  98. #define GOSUB        35
  99. #define GOTO        36
  100. #define IF        37
  101. #define IFKEY        38
  102. #define IFMEM        39
  103. #define IFMOUSE        40
  104. #define IFVIDEO        41
  105. #define INT        42
  106. #define LINE        43
  107. #define LINK        44
  108. #define LOCAL        45
  109. #define LOOP        46
  110. #define MARK        47
  111. #define MERGE        48
  112. #define MODE        49
  113. #define MOUSE        50
  114. #define MOVE        51
  115. #define NOISE        52
  116. #define NOTE        53
  117. #define OFFSETOP    54
  118. #define OPENGL        55
  119. #define OUT        56
  120. #define PALETTE        57
  121. #define PAN        58
  122. #define PFADE        59
  123. #define PFREE        60
  124. #define PGETBUF        61
  125. #define PLOAD        62
  126. #define PNEWBUF        63
  127. #define POINT        64
  128. #define POKE        65
  129. #define POKEL        66
  130. #define POKEW        67
  131. #define POP        68
  132. #define POSITION    69
  133. #define PSAVE        70
  134. #define PSETBU        71
  135. #define PUTDFF        72
  136. #define PUTUP        73
  137. #define REC        74
  138. #define RESETGL        75
  139. #define RESETSCR    76
  140. #define RETURN        77
  141. #define REVPAGE        78
  142. #define SEND        79
  143. #define SET        80
  144. #define SETCOLOR    81
  145. #define SETPAGE        82
  146. #define SETRGB        83
  147. #define SETUPSCR    84
  148. #define SPLIT        85
  149. #define SPREAD        86
  150. #define TEXT        87
  151. #define TILE        88
  152. #define TIMER        89
  153. #define TRAN        90
  154. #define VIDEO        91
  155. #define WAITKEY        92
  156. #define WHEN        93
  157. #define WINDOW        94
  158. #define FADE        95
  159. #define WAIT        96
  160. #define NTOKENS        WAIT+1
  161. #define ARG        128
  162. #define INTEGER        ARG+1
  163. #define STRING        ARG+2
  164. #define IMAGE        ARG+3
  165. #define FONTTYPE    ARG+4
  166. #define EXECTYPE    ARG+5
  167. #define WILDTYPE    ARG+6
  168.  
  169.  
  170. typedef struct {
  171.     char       *name;
  172.     int         type;
  173.     int         w;
  174.     int         h;
  175.     int         d;
  176.     int         xoff;
  177.     int         yoff;
  178.     Pixmap      pix;
  179.     Colormap    cmap;
  180.     int         cmaplen;
  181.     XColor      colors[256];
  182. }           ImageStruct;
  183.  
  184. typedef struct {
  185.     Pixmap      pix;
  186.     int         width;
  187.     int         lbearing;
  188. }           GlyphStruct;
  189.  
  190. typedef struct {
  191.     char       *name;
  192.     int         width;
  193.     int         height;
  194.     GlyphStruct glyphs[256];
  195. }           FontStruct;
  196.  
  197. typedef struct {
  198.     char        fname[13];
  199.     long        offset;
  200. }           FilenameStruct;
  201.  
  202. typedef struct {
  203.     int         token;
  204.     union {
  205.     char       *s;
  206.     int         i;
  207.     ImageStruct *image;
  208.     FontStruct *font;
  209.     struct execStruct *exec;
  210.     }           val;
  211. }           ExecAtom;
  212.  
  213.  
  214. typedef struct {
  215.     char       *string;
  216.     int         ipaddr;
  217. }           LabelStruct;
  218.  
  219. #define MAXCODES 8196    // was 10240
  220. #define MAXLABELS 256    // was 512
  221.  
  222. typedef struct execStruct {
  223.     char       *name;
  224.     int         numcodes;
  225.     ExecAtom    Code[MAXCODES];
  226.     int         numlabels;
  227.     LabelStruct label[MAXLABELS];
  228.     int         currentdataptr;
  229.     int         currentdataend;
  230.     int         ip;
  231.     char       *txt;
  232. }           ExecStruct;
  233.  
  234. extern char *tokens[];
  235.  
  236. #define MAXIMAGES 120         //was 256
  237. extern ImageStruct *image[MAXIMAGES];
  238. extern int  numimages;
  239.  
  240. #define MAXFONTS 6         //was 16
  241. extern FontStruct *font[MAXFONTS];
  242. extern int  numfonts;
  243.  
  244. #define MAXEXECS 6        //was 16
  245. extern ExecStruct *execRec[MAXEXECS];
  246. extern int  numexecs;
  247.  
  248. #define MAX(a,b) ((a)>(b)?(a):(b))
  249. #define MIN(a,b) ((a)<(b)?(a):(b))
  250.  
  251. /* EGA palette is 6 bit direct color, byte encoded
  252.  * _________________________________
  253.  * | x | x | r | g | b | R | G | B |
  254.  * ---------------------------------
  255.  * where r == "1 part red" and R == "2 parts red", and x's are ignored.
  256.  * where the 0-3 part sequence is 0, 85, 170, 255.
  257.  */
  258. #define decodepal(pal, one, two) ((((pal)&(one))?85:0)+(((pal)&(two))?170:0))
  259.  
  260. extern u_short egapal[16][3];
  261. extern int  cgapal[3][6];
  262.  
  263. #define EXT_PIC 0
  264. #define EXT_PCX 1
  265. #define EXT_GIF 2
  266. #define EXT_PAL 3
  267. #define EXT_CLP 4
  268. #define EXT_SET 5
  269. #define EXT_FNT 6
  270. #define EXT_TXT 7
  271.  
  272. #define YFLIP(y) (picreg[0]->h-(1)-(y))
  273. #define YFLIPIM(y,im) (YFLIP(y)-(im)->h)
  274.  
  275. #endif /* H_grasp */
  276.